/*
 * InternalProperty.java
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 21/06/2011, 11:05:38 PM
 */
package com.ufps.cuatro.modelo.representacion;

import com.ufps.cuatro.util.base.ObjectBase;

/**
 * <i><b>InternalProperty:</b></i> <p>Esta Clase Representa una Propiedad Interna.
 * Este tipo de Propiedades se utilizan para procesos interno de la aplicación,
 * por lo general en la generación de código o en la representación grafica de
 * componentnes su configuración depende estricitamente del archivo de configuración.
 * Por ningun motivo se debe alterar esa configuración porque afectaría en proceso
 * para el cual fue definida.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 21/06/2011
 * @see ObjectBase
 */
public class InternalProperty extends ObjectBase{
    private static final long serialVersionUID = 1999578113105159322L;
    
    private String name;
    private String value;

    public InternalProperty(String name, String value, int id) {
        super(id);
        this.name = name;
        this.value = value;
    }
    
    public InternalProperty(int id, String name, String value) {
        super(id);
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return name + " : " + value;
    }

    @Override
    public int compareTo(Object o) {
        try{
            InternalProperty obj = (InternalProperty) o;
            if(this.id > obj.id)
                return 1;
            else if(this.id < obj.id)
                return -1;
            else
                return 0;
        }catch(java.lang.NullPointerException ex){}
        return 0;
    }

    @Override
    protected Object clone() {
        try{
            InternalProperty objClon = null;
            //----------------------------------------------------------
            //Primero se Clona la Referencia Local
            //----------------------------------------------------------
            objClon = (InternalProperty) super.clone();
            //----------------------------------------------------------
            //Ahora se hace la Clonación Profunda
            //----------------------------------------------------------        
            if(this.name != null){
                ((InternalProperty)objClon).name = new String(name.toCharArray());
            }        
            if(this.value != null){
                ((InternalProperty)objClon).value = new String(value.toCharArray());
            }                    
            return objClon;
        }catch(java.lang.NullPointerException ex){}
            return null;
    }
}
